<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 数据结构--存数据的结构
        // **数组 [1,5,6,7,]  存一组有序的数据
        // **对象  存 键值对   对象的键 默认都是字符串类型---symbol类型

        // 新增数据结构set和map
        // set 类似数组-- 不能存重复元素 --没有下标--
        // 创建  new Set()   new Set([1,2,3,4,1,2,3])
        // 属性
        // 方法

        // map 类似对象--  键值对-- 键 可以是任意类型

        let s1 = new Set();

        s1.add(1)
        s1.add(2)
        s1.add(2)

        console.log(s1);
        // 大小--几个元素
        console.log(s1.size);

        // 判断是否存在
        console.log(s1.has(1));

        // // 删除元素
        // s1.delete(2)

        // // 清空元素
        // s1.clear()

        // 遍历
        s1.forEach(v => {
            console.log(v);
        })

        // 数组去重
        let arr = [1, 2, 3, 3, 1, 2, 3];
        let s2 = new Set(arr);
        console.log(s2);
        // 把set转为数组
        let res1 = Array.from(s2);
        console.log(res1);
        // ...{1, 2, 3}-->1, 2, 3
        let res2 = [...s2];
        console.log(res2);



        // *****
        let res3 = [...new Set(arr)];
        let res4 = Array.from(new Set(arr));
        console.log(res3);
        console.log(res4);




        let m1 = new Map()

        // 存入一个键值对
        m1.set('username', 'zhangsan');
        m1.set('age', 18);
        function fn() { }

        m1.set(fn, 'aaa')

        console.log(m1);


        // 获取
        console.log(m1.get(fn));

        // 删除
        m1.delete(fn);
        console.log(m1);

        // 判断是否有某个key
        console.log(m1.has(fn));

        // 遍历 第一个形参是 value ，第二个形参是 key
        m1.forEach(function (v, k) {
            console.log(k, v);
        })

        // let obj = {}
        // obj[fn] = '2222'
        // // 普通的对象，如果属性名不是字符串-会强制调用toString方法 转为字符串
        // obj[fn.toString()] = '2222'
        // console.log(obj);

        // console.log(obj['function fn() { }']);


        // 
        let arr2 = [
            ['username', 'zhangsan'],
            ['age', 18]
        ]

        // 二维数组 可以转为map结构
        let m3 = new Map(arr2);
        console.log(m3);





    </script>

</body>

</html>